
package com.hc.util;

import cn.painto.util.AES;

import java.util.Properties;


/**
 * 
* @Description: 获取Token生成Token以及解析Token工具类
* @author   
* @date 2016年11月23日 下午4:45:33  
*
 */
public class AuthToken {
	
	private static String key = "";
	
	static{
		GetProperties get = new GetProperties();
		Properties p = get.getResource();
		if (p==null||p.equals("")){
			LoggerUtil.error(new Exception("=======ERROR:未加载到pubKey,LEVEL:5==========="));
		}else{
			key = ((String) p.get("pubKey")).trim();
		}
	}
	/**
	 * 
	 * @Description： token获取方法
	 * @param text uid
	 * @param text2 设备号
	 * @author:  
	 * @since: 2016年11月23日 下午4:46:54
	 */
	public static String getToken(String text,String text2,String text3){
		String content = text+"|"+text2+"|"+text3;
		try {
		String token = AES.aesEncrypt(content,key);
		return token;
		} catch (Exception e) {
			LoggerUtil.error(e);
			return null;
		}
	}
	/**
	 * 
	 * @Description： 获取解密后的参数
	 * @param token 密文
	 * @param type 1：获取用户uid 2:获取设备号 ( 3：获取登录毫秒时间  参数保留，暂不使用)
	 * @return
	 * @author:  
	 * @since: 2016年11月22日 下午3:08:54
	 */
	public static String getInfo(String token,Integer type){
		try {
			String[] info = AES.aesDecrypt(token,key).split("\\|");
			if (info.length!=2){
				throw new Exception("ERROR:Token不合法");
			}
			if (type==null){
				throw new Exception("ERROR:type不能为空");
			}
			switch (type) {
			case 1:
				return info[0];
			case 2:
				return info[1];
			case 3:
				return info[2];
			default:
				throw new Exception("ERROR:type值范围错误(1-3)");
			}
		} catch (Exception e) {
			LoggerUtil.error(e);
			return null;
		}
	}
}

